﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.SqlServer.Server;
using qlqa.Models.LinQ;
using Webdiyer.WebControls.Mvc;

namespace qlqa.Delegate.CommonDelegate
{
    public class CommonDelegate
    {
        /// <summary>
        /// Update database
        /// </summary>
        /// <returns></returns>
        public bool SaveChange(DatabaseDataContext database)
        {
            try
            {
                database.SubmitChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        /// <summary>
        /// Chuyển paging sang tiếng việt
        /// </summary>
        /// <param name="pagerOptions">PagerOptions muốn thay đổi thuộc tính</param>
        /// <param name="PageIndexParameterName">Tên đặt của chỉ số trang</param>
        public void ChangeTextPaging(PagerOptions pagerOptions, string PageIndexParameterName)
        {
            pagerOptions.PageIndexParameterName = string.IsNullOrEmpty(PageIndexParameterName) ? "id" : PageIndexParameterName;
            pagerOptions.NextPageText = "Tiếp";
            pagerOptions.PrevPageText = "Lùi";
            pagerOptions.FirstPageText = "Đầu";
            pagerOptions.LastPageText = "Cuối";
            pagerOptions.CurrentPageNumberFormatString = "[{0}]";
        }
        /// <summary>
        /// Tạo đường dẫn upload file hình món ăn
        /// </summary>
        /// <param name="modul"></param>
        /// <param name="optionDirectory"></param>
        /// <param name="id"></param>
        /// <param name="createdDate"></param>
        /// <returns></returns>
        public string GetPathForUploadFileAll(string modul, string optionDirectory, string id, DateTime createdDate)
        {
            string directoryPath;
            string directoryName = modul + "." + id + "." + (createdDate).ToString("dd") + (createdDate).ToString("MM") + (createdDate).ToString("yyyy");
            if (string.IsNullOrEmpty(optionDirectory))
            {
                directoryPath = "~/UploadFile/" + (createdDate).ToString("yyyy") + "/" + modul + "/Thang." + (createdDate).ToString("MM") + "." + (createdDate).ToString("yyyy") + "/" + directoryName;
            }
            else
            {
                directoryPath = "~/UploadFile/" + (createdDate).ToString("yyyy") + "/" + modul + "/Thang." + (createdDate).ToString("MM") + "." + (createdDate).ToString("yyyy") + "/" + directoryName + "/" + optionDirectory;
            }


            return directoryPath;
        }

        public string GetPathForShowFileAll(string modul, string optionDirectory, string id, DateTime createdDate)
        {
            string directoryPath;
            string directoryName = modul + "." + id + "." + (createdDate).ToString("dd") + (createdDate).ToString("MM") + (createdDate).ToString("yyyy");
            if (string.IsNullOrEmpty(optionDirectory))
            {
                directoryPath = "../../UploadFile/" + (createdDate).ToString("yyyy") + "/" + modul + "/Thang." + (createdDate).ToString("MM") + "." + (createdDate).ToString("yyyy") + "/" + directoryName;
            }
            else
            {
                directoryPath = "../../UploadFile/" + (createdDate).ToString("yyyy") + "/" + modul + "/Thang." + (createdDate).ToString("MM") + "." + (createdDate).ToString("yyyy") + "/" + directoryName + "/" + optionDirectory;
            }


            return directoryPath;
        }

        public string GetQuangThoiGian(DateTime? ngayThang)
        {
            if (ngayThang == (DateTime?)null || ngayThang == new DateTime())
            {
                return string.Empty;
            }
            try
            {
                // Cấu trúc trả về thời điểm trong ngày (Khoảng cách so với hiện tại) (ngày tháng theo định dạng dd/M/yyyy hh:ss:mm t)
                var thoiDiem = "";
                var day = 0;
                var hour = 0;
                var minute = 0;
                var second = 0;
                // Lấy ngày tháng hiện tại
                var ngayThangHienTai = DateTime.Now;
                // So sánh hai ngày tháng với nhau
                var timeSpan = (ngayThangHienTai - (DateTime)ngayThang);
                day = timeSpan.Days;
                hour = timeSpan.Hours;
                minute = timeSpan.Minutes;
                second = timeSpan.Seconds;
                // Các kết quả trả về tương ứng với kết quả so sánh
                if (day > 0)
                {
                    return string.Format("Cách đây " + day + " ngày.");
                    //thoiDiem + " , ngày " + ((DateTime)ngayThang).ToString("dd/MM/yyyy") + " lúc " + ((DateTime)ngayThang).ToString("hh:mm");
                }
                if (hour > 0)
                {
                    return string.Format("Cách đây " + hour + " giờ.");
                }
                if (minute > 0)
                {
                    return string.Format("Cách đây " + minute + " phút");
                }
                if (second >= 0)
                {
                    return string.Format("Vừa tức thời");
                }
                return string.Empty;
            }
            catch
            {
                return string.Empty;
            }
        }

        public bool SaveChange()
        {
            try
            {
                var database = new DatabaseDataContext();
                database.SubmitChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public string GetTrangThaiSuDungBan(int trangThai)
        {
            try
            {
                var database = new DatabaseDataContext();
                var temp = database.meta_TrangThaiSuDung_Bans.FirstOrDefault(p => p.Id == trangThai);
                if (temp == null) return string.Empty;
                var str = temp.Ten;
                return str;
            }
            catch (Exception)
            {
                return string.Empty;
            }
        }

        public string GetTenMonAn(int? idMon)
        {
            try
            {
                var database = new DatabaseDataContext();
                var temp = database.tb_MonAns.FirstOrDefault(p => p.Id == idMon);
                if (temp == null) return string.Empty;
                var str = temp.Ten;
                return str;
            }
            catch (Exception)
            {
                return string.Empty;
            }
        }

        public bool InsertDefaultMetadata()
        {
            try
            {
                var database = new DatabaseDataContext();

                var list = database.meta_TrangThaiSuDung_Bans.ToList();
                if (list.Any())
                    return true;

                var numeta1 = new meta_TrangThaiSuDung_Ban
                {
                    Id = 1,
                    Meta = "trong",
                    Ten = "Trống",
                    MoTa = "Bàn trống, có thể sử dụng",
                    IsShow = true
                };

                var numeta2 = new meta_TrangThaiSuDung_Ban
                {
                    Id = 2,
                    Meta = "dangsudung",
                    Ten = "Đang sử dụng",
                    MoTa = "Bàn đang sử dụng",
                    IsShow = false
                };

                var numeta3 = new meta_TrangThaiSuDung_Ban
                {
                    Id = 3,
                    Meta = "dattruoc",
                    Ten = "Đặt trước",
                    MoTa = "Bàn đặt trước",
                    IsShow = true
                };

                var numeta4 = new meta_TrangThaiSuDung_Ban
                {
                    Id = 4,
                    Meta = "dangghep",
                    Ten = "Đang ghép",
                    MoTa = "Bàn đang được ghép với bàn khác",
                    IsShow = false
                };

                database.meta_TrangThaiSuDung_Bans.InsertOnSubmit(numeta1);
                database.meta_TrangThaiSuDung_Bans.InsertOnSubmit(numeta2);
                database.meta_TrangThaiSuDung_Bans.InsertOnSubmit(numeta3);
                database.meta_TrangThaiSuDung_Bans.InsertOnSubmit(numeta4);

                database.SubmitChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public string GetMetaName(int metaId)
        {
            switch (metaId)
            {
                case 1:
                    return "Trống";
                case 2:
                    return "Đang sử dụng";
                case 3:
                    return "Đặt trước";
                case 4:
                    return "Đang ghép với bàn khác";
                default:
                    return string.Empty;
            }
        }

        public DateTime? ConvertToDateTime(string strDate) // strDate=dd/mm/yyyy
        {
            string[] arr = strDate.Split('/');
            if (arr.Length != 3)
                return null;
            string converdate = arr[2] + "-" + arr[1] + "-" + arr[0];
            return DateTime.Parse(converdate);
        }
    }


}